home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 23 / AACD 23.iso / AACD / Programming / tek / kn / elate / visual / getevent.asm < prev    next >
Assembly Source File  |  2001-05-12  |  5KB  |  212 lines

  1.  
  2.     .include 'taort'
  3.     .include 'ave/toolkit/toolkit.inc'
  4.     .include 'lib/tek/kn/elate/visual.inc'
  5.  
  6. ;=============================================================================
  7. ;-----------------------------------------------------------------------------
  8. ;    TEKlib
  9. ;    (C) 1999-2001 TEK neoscientists
  10. ;    all rights reserved.
  11. ;
  12. ;    newev = getevent(visual, &ev, &x, &y, &keycooked,&resize,&buttonstate)
  13. ;
  14. ;-----------------------------------------------------------------------------
  15. ;=============================================================================
  16.  
  17.     tool 'lib/tek/kn/visual/getevent',VP,0
  18.  
  19. ;-----------------------------------------------------------------------------
  20.  
  21.     ent p0 p1 p2 p3 p4 p5 p6 : i0
  22.  
  23.     defbegin
  24.     defp visual,evtp,xp,yp,keycooked,resize,buttonstate
  25.     defp app,avo,ave,msg,pixmap,win,tempp
  26.     defi evt,temp,x,y
  27.     defi cont,neww,newh
  28.  
  29.  
  30.         cpy    0,[resize]
  31.         cpy    0,[buttonstate]
  32.  
  33.         cpy.p    [visual+vis_app],app
  34.         cpy.p    [visual+vis_ave],ave
  35.         cpy.p    [visual+vis_window],win
  36.         cpy.p    [visual+vis_pixmap],pixmap
  37.  
  38.  
  39. _getloop:
  40.         cpy    0,cont
  41.  
  42.         ncall    app,getevent,(app,1.l:avo,msg,evt)
  43.         bcp    avo eq 0,_evokay
  44.         
  45.  
  46.     
  47.     ;    if    evt = EV_GAINEDTOKEN
  48.     ;        if    [msg + EVD_TOKEN] = BFAVO_KEYTOKEN
  49.     ;            tracef "gained key token: %d\n",evt
  50.     ;        else
  51.     ;        ;    tracef "gained other token\n"
  52.     ;        endif
  53.     ;    elseif    evt = EV_LOSTTOKEN
  54.     ;        if    [msg + EVD_TOKEN] = BFAVO_KEYTOKEN
  55.     ;            tracef "lost key token event: %d\n",evt
  56.     ;        ;    qcall    ave/input/checkfocus,(NULL,app:-)
  57.     ;        ;    qcall    ave/input/checkfocus,(NULL,pixmap:-)
  58.     ;            ncall    app,settoken,(app,pixmap,BFAVO_KEYTOKEN:-)
  59.     ;        else
  60.     ;            tracef "lost other token\n"
  61.     ;        endif
  62.  
  63.         if evt = EV_BUTTONUP
  64.             if    avo eq [visual+vis_pixmap]
  65.                 cpy.i    [msg+EVD_RX],x
  66.                 cpy.i    [msg+EVD_RY],y
  67.                 cpy.i    x,[xp]
  68.                 cpy.i    y,[yp]
  69.  
  70.                 cpy.i    2,temp            
  71.                 ncall    ave,settoken,(ave,win,temp:-)            ; activate window!
  72.  
  73.                 cpy.i    [visual+vis_currentbuttonstate],[buttonstate]
  74.                 cpy.i    0,[visual+vis_currentbuttonstate]
  75.                 ;tracef    "buttonup event: %d %d %d %d\n", evt,x,y,temp
  76.             endif
  77.         
  78.         elseif evt = EV_BUTTONDOWN
  79.             if    avo eq [visual+vis_pixmap]
  80.                 cpy.i    [msg+EVD_RX],x
  81.                 cpy.i    [msg+EVD_RY],y
  82.                 cpy.i    x,[xp]
  83.                 cpy.i    y,[yp]
  84.  
  85.                 cpy.i    [msg+EVD_BUTTONS],temp
  86.                 cpy.i    temp,[buttonstate]
  87.                 cpy.i    temp,[visual+vis_currentbuttonstate]
  88.                 ;tracef    "buttondown event: %d %d %d %d\n", evt,x,y,temp
  89.             endif
  90.  
  91.         elseif evt = EV_TRACKING
  92.             if    avo eq [visual+vis_pixmap]
  93.                 cpy.i    [msg+EVD_RX],x
  94.                 cpy.i    [msg+EVD_RY],y
  95.                 cpy.i    x,[xp]
  96.                 cpy.i    y,[yp]
  97.                 ;tracef    "tracking event: %d %d %d\n", evt,x,y
  98.             endif
  99.  
  100.         elseif evt = EV_KEYDOWN
  101.             ;tracef    "keydown. cooked: %x\n", [msg+EVD_KEYCOOKED]
  102.             cpy.i    [msg+EVD_KEYCOOKED],[keycooked]
  103.         
  104.         elseif evt = EV_DIALOG_RESIZE
  105.         
  106.             ;tracef    "*** TEKLIB kn_getevent - resize event\n"
  107.             cpy    1,[resize]
  108.             cpy    1,cont
  109.  
  110.         endif
  111.  
  112.  
  113.         ncall    avo,event,(avo,msg,evt:-)
  114.         ncall    ave,freeevent,(ave,msg:-)
  115.  
  116.         bcn    cont eq 1,_getloop
  117.  
  118.         
  119.         bcp    [resize] eq 0,_oki
  120.  
  121.         cpy.p    [visual+vis_scrollpane],tempp
  122.         ncall    tempp,getsize,(tempp:neww,newh)
  123.         gos    _resize,(visual,neww,newh:i~)
  124.  
  125. _oki:        cpy.i    evt,[evtp]
  126.         cpy.i    1,i0
  127.         ret
  128.  
  129. _evokay:    cpy.i    evt,[evtp]
  130.         cpy.i    0,i0
  131.         ret
  132.  
  133.     defend
  134.  
  135.  
  136.  
  137. _resize:
  138.  
  139.     ent    p0 i0 i1 : i0
  140.  
  141.     defbegin
  142.     defp    visual
  143.     defi    neww,newh
  144.     defi    success
  145.     defp    temp,ave,cnt
  146.  
  147.         cpy.i    0,success
  148.  
  149.         cpy.p    [visual+vis_buffer],temp
  150.         qcall    lib/realloc,(temp,neww*newh*4:temp)
  151.         bcn    temp eq 0,_resize_fail
  152.         qcall    lib/memseti,(temp,[visual+vis_backcolor],neww*newh*4:p~)
  153.         cpy.p    temp,[visual+vis_buffer]
  154.         
  155.         cpy.p    [visual+vis_buffer2],temp
  156.         qcall    lib/realloc,(temp,neww*newh*4:temp)
  157.         bcn    temp eq 0,_resize_fail
  158.         qcall    lib/memseti,(temp,[visual+vis_backcolor],neww*newh*4:p~)
  159.         cpy.p    temp,[visual+vis_buffer2]
  160.  
  161.         cpy.i    neww,[visual+vis_width]
  162.         cpy.i    newh,[visual+vis_height]
  163.  
  164.         cpy.p    [visual+vis_ave],ave
  165.         cpy.p    [visual+vis_content],cnt
  166.  
  167.  
  168.         ;    unlink old pixmap.
  169.  
  170.         cpy.p    [visual+vis_pixmap],temp
  171.         ncall    cnt,sub,(cnt,temp:-)
  172.  
  173.  
  174.         ;    delete old pixmaps.
  175.  
  176.         ncall    temp,_deinit,(temp:-)
  177.         qcall    ave/avo/_delete,(temp:-)
  178.         cpy.p    0,[visual+vis_pixmap]
  179.         cpy.p    [visual+vis_pixmap2],temp
  180.         ncall    temp,_deinit,(temp:-)
  181.         qcall    ave/avo/_delete,(temp:-)
  182.         cpy.p    0,[visual+vis_pixmap2]
  183.  
  184.  
  185.         ;    create new pixmaps.
  186.  
  187.         cpy.p    [visual+vis_buffer],temp
  188.         qcall    ave/avo/pix/32bit/open,(temp,neww,newh,neww*4:temp)
  189.         bcn    temp eq 0,_resize_fail
  190.         cpy.p    temp,[visual+vis_pixmap]
  191.         ncall    cnt,add,(cnt,temp,0:-)
  192.  
  193.         cpy.p    [visual+vis_buffer2],temp
  194.         qcall    ave/avo/pix/32bit/open,(temp,neww,newh,neww*4:temp)
  195.         bcn    temp eq 0,_resize_fail
  196.         cpy.p    temp,[visual+vis_pixmap2]
  197.  
  198.  
  199.         cpy.i    1,success
  200.  
  201. _resize_fail:
  202.         cpy.i    success,i0
  203.         ret
  204.  
  205.     defend
  206.  
  207.     toolend
  208.  
  209. ;-----------------------------------------------------------------------------
  210. ;=============================================================================
  211.